Directory services exist in the form of software systems that store, organize, and provide access to information in a directory. As used herein, the term directory generally refers to a plurality of objects that are organized in a logical and hierarchical manner. Various protocols exist by which clients may interact with a directory service to perform operations with respect to objects in a directory, such as creating, deleting, updating, or running queries against objects in the directory. For example, the Lightweight Directory Access Protocol (LDAP) is a protocol by which clients may interact with a directory service over a transmission control protocol (TCP) connection. In accordance with such protocols, directories are often configured to include a tree of directory objects. Each directory object usually consists of a set of attributes. An attribute has a name (an attribute type or attribute description) and one or more values. The attributes are defined in a schema.
It may be deemed desirable to implement systems in which clients can interact with a remote directory service, such as an LDAP-style directory service, over a network using industry standard Web services protocols. For example, it may be deemed desirable to enable clients to interact with a remote directory service using industry standard Web services protocols that represent objects using Extensible Markup Language (XML). Examples of such Web services protocols include, for example, SOAP-based protocols such as WS-Enumeration.
SOAP, which was originally defined as Simple Object Access Protocol, is a protocol specification for exchanging structured information in the implementation of Web services in computer networks. SOAP relies on XML for its message format, and usually relies on other application layer protocols (most notably Hypertext Transfer Protocol (HTTP)) for message negotiation and transmission. SOAP can form the foundation layer of a Web services protocol stack, providing a basic messaging framework upon which Web services can be built.
WS-Enumeration describes a SOAP-based protocol for enumerating a sequence of XML elements. WS-Enumeration enables an application to provide an enumeration message to a Web service, requesting a representation of all objects that match designated criteria. The Web service responds to the enumeration message with an enumeration context, which may then be used by the application to retrieve the objects that match the designated criteria. In this way, WS-Enumeration is useful for reading event logs, message queues, streaming, or other applications for which a simple single-request/single-reply metaphor may be insufficient for transferring large data sets over SOAP. However, in conventional WS-Enumeration implementations, when objects are retrieved the objects are provided to the application in an arbitrary order. Moreover, each retrieved object may include attributes that are not needed by the application. WS-Enumeration is described at http://www.w3.org/Submission/WS-Enumeration.